Nel teatro del C++, ogni oggetto ha una durata di vita—la vita dell'oggetto. Questo definisce la durata per cui un oggetto occupa spazio in memoria. All'interno di un corpo della funzione, il comportamento predefinito per variabili locali è essere automatico, ma possiamo comandarli per essere statico per cambiare il loro destino.
1. Oggetti Automatici
Per impostazione predefinita, le variabili locali sono oggetti automatici. Vengono creati (inizializzati) quando l'esecuzione della funzione esecuzione raggiunge la loro definizione e muoiono (vengono recuperati) quando il blocco termina. Risiedono nello stack, rendendoli sempre nuovi per ogni chiamata.
2. Oggetti Statici Locali
Quando si utilizza la statico parola chiave, si crea un oggetto statico locale. Vengono inizializzati solo una volta—prima della prima volta che il controllo passa attraverso la loro definizione—e rimangono attivi fino al termine del programma. Ciò permette a una funzione di "ricordare" lo stato senza contaminare lo spazio globale.
3. La Trappola della Ricorsione
In una funzione ricorsiva, ogni iterazione ricorsiva crea un'istanza distinta dei suoi oggetti automatici. Se la ricorsione è profonda, questo consuma uno spazio significativo sullo stack. Al contrario, un statico oggetto viene condiviso a tutti i livelli di quella ricorsione.